// 请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ，验证已经填入的数字是否有效即可。

// 数字 1-9 在每一行只能出现一次。
// 数字 1-9 在每一列只能出现一次。
// 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。（请参考示例图）
// 数独部分空格内已填入了数字，空白格用 '.' 表示。

// 注意：

// 一个有效的数独（部分已被填充）不一定是可解的。
// 只需要根据以上规则，验证已经填入的数字是否有效即可。
 

var isValidSudoku = function(board) {
    let arr = new Array;
    let brr = new Array;
    let tem = new Array;
    for (let i = 0; i < 9; i++) {
        for (let j = 0; j < 9; j++) {
            if (board[i][j] != ".") {
                arr.push(board[i][j]);
                arr.sort((a, b) => { return a - b })
                for (let k = 0; k < arr.length; k++) {
                    if (arr[k] == arr[k + 1]) { return false }
                }
            }
            if (board[j][i] != ".") {
                brr.push(board[j][i]);
                brr.sort((a, b) => { return a - b })
                for (let k = 0; k < brr.length; k++) {
                    if (brr[k] == brr[k + 1]) { return false }
                }
            }
            if ((i + 1) % 3 == 0 && (j + 1) % 3 == 0) {
                if (i == 0) { continue; };
                for (let a = 0; a < 3; a++) {
                    for (let b = 0; b < 3; b++) {
                        if (board[i - a][j - b] != ".") {
                            tem.push(board[i - a][j - b]);
                            tem.sort((a, b) => { return a - b });
                            for (let k = 0; k < tem.length; k++) {
                                if (tem[k] == tem[k + 1]) { return false }
                            }
                        }
                    }
                }
            }
            tem = [];
        }
        arr = [];
        brr = [];
    }
    return true;
};
let a = [
    ["5", "3", ".", ".", "7", ".", ".", ".", "."],
    ["6", "8", ".", "1", "9", "5", ".", ".", "."],
    [".", "9", "8", ".", ".", ".", ".", "6", "."],
    ["5", ".", ".", ".", "6", ".", ".", ".", "3"],
    ["4", ".", ".", "8", ".", "3", ".", ".", "1"],
    ["7", ".", ".", ".", "2", ".", ".", ".", "6"],
    [".", "6", ".", ".", ".", ".", "2", "8", "."],
    [".", ".", ".", "4", "1", "9", ".", ".", "5"],
    [".", ".", ".", ".", "8", ".", ".", "7", "9"]
]
isValidSudoku(a);